css image recolor: Load images at the proper scale
authorMatthias Clasen <mclasen@redhat.com>
Fri, 29 Jan 2016 22:30:10 +0000 (17:30 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 29 Jan 2016 22:30:10 +0000 (17:30 -0500)
We should not hardcode a scale of 1, this leads to
pixellated upscaled images at scale=2, even if the source
is an svg. By passing the proper scale, we can load the
svg at the correct size.

gtk/gtkcssimagerecolor.c

index 32c284945580f923110c11766c37fef679a233c9..c0aed941767f39bdbf031a3d611fa34e7501456b 100644 (file)
@@ -101,7 +101,8 @@ lookup_symbolic_colors (GtkCssStyle *style,
 static GtkCssImage *
 gtk_css_image_recolor_load (GtkCssImageRecolor *recolor,
                             GtkCssStyle        *style,
-                            GtkCssValue        *palette)
+                            GtkCssValue        *palette,
+                            gint                scale)
 {
   GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (recolor);
   GtkIconInfo *info;
@@ -112,7 +113,7 @@ gtk_css_image_recolor_load (GtkCssImageRecolor *recolor,
 
   lookup_symbolic_colors (style, palette, &fg, &success, &warning, &error);
 
-  info = gtk_icon_info_new_for_file (url->file, 0, 1);
+  info = gtk_icon_info_new_for_file (url->file, 0, scale);
   pixbuf = gtk_icon_info_load_symbolic (info, &fg, &success, &warning, &error, NULL, &gerror);
   g_object_unref (info);
 
@@ -145,13 +146,16 @@ gtk_css_image_recolor_compute (GtkCssImage             *image,
   GtkCssImageRecolor *recolor = GTK_CSS_IMAGE_RECOLOR (image);
   GtkCssValue *palette;
   GtkCssImage *img;
+  int scale;
+
+  scale = _gtk_style_provider_private_get_scale (provider);
 
   if (recolor->palette)
     palette = _gtk_css_value_compute (recolor->palette, property_id, provider, style, parent_style);
   else
     palette = _gtk_css_value_ref (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_PALETTE));
 
-  img = gtk_css_image_recolor_load (recolor, style, palette);
+  img = gtk_css_image_recolor_load (recolor, style, palette, scale);
 
   _gtk_css_value_unref (palette);